package version2024.medium;

import java.util.*;

/**
 * @author sunhl
 * @Description: HJ27 查找兄弟单词   Arrays.sort方法的不变性, 字符串操作
 * @Date: created in 2024/12/28 星期六 22:54
 * @Modified By:
 */
public class HJ27_FindBrotherWords {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            // 获取输入的行内容
            // 先输入字典中单词的个数n，再输入n个单词作为字典单词。 然后输入一个单词x 最后输入一个整数k
            String[] ss = in.nextLine().split(" ");

            Integer n = Integer.parseInt(ss[0]);

            String x = ss[ss.length - 2];

            Integer k = Integer.parseInt(ss[ss.length - 1]);

            List<String> list = new ArrayList<>();
            // 筛选出兄弟单词
            for (int i = 1; i <= n; i++) {
                if (isBrother(x, ss[i])) {
                    list.add(ss[i]);
                }
            }
            int size = list.size();
            // 输出找到的兄弟单词个数
            System.out.println(size);

            if (size >= k) {
                // 对兄弟单词进行字典排序
                Collections.sort(list);
                System.out.println(list.get(k - 1));
            }
        }
    }

    public static boolean isBrother(String x, String y) {
        if (null == x || null == y || x.length() != y.length() || x.equals(y)) {
            return false;
        }

        // 将输入的字符串转为字符数组
        char[] s = x.toCharArray();
        char[] j = y.toCharArray();
        // 利用sort的稳定性做字母排序, 这里没处理大小写的问题, 不过题目也没说有大写字母
        Arrays.sort(s);
        Arrays.sort(j);

        return new String(s).equals(new String(j));
    }
}
